// src/stores/useAuthStore.ts

import { defineStore } from 'pinia'

/**
 * 定义 auth store：
 * - token 和 username 从 localStorage 初始化
 * - 登录时更新状态并持久化到 localStorage
 * - 登出时清除状态和 localStorage 中的数据
 */
export const useAuthStore = defineStore('auth', {
    state: () => ({
        // 从 localStorage 获取 token，若不存在则设为 null
        token: localStorage.getItem('token') || null,

        // 同理获取用户名
        username: localStorage.getItem('username') || null,
    }),

    actions: {
        /**
         * 设置 token 并保存到 localStorage
         * @param token - 接口返回的 token 字符串
         * @param username - 可选参数，用户登录名
         */
        setToken(token: string, username?: string) {
            this.token = token
            localStorage.setItem('token', token)

            if (username) {
                this.username = username
                localStorage.setItem('username', username)
            }
        },

        /**
         * 清除 token 和用户名，用于退出登录
         */
        clearToken() {
            this.token = null
            this.username = null
            localStorage.removeItem('token')
            localStorage.removeItem('username')
        }
    }
})
